package com.ycl;

import com.ycl.common.QRCodePay;
import com.ycl.controller.ClientController;
import com.ycl.mapper.BlackListMapper;
import com.ycl.mapper.ChatRecordMapper;
import com.ycl.mapper.UserMapper;
import com.ycl.mapper.VIPMapper;
import com.ycl.pojo.BlackList;
import com.ycl.pojo.ChatRecord;
import com.ycl.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.mail.MessagingException;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <h1>用来测试的<h1/>
 */
public class exercise {
    public static void main(String[] args) throws MessagingException, IOException {

/*数据库实验*/
//     UserMapper userMapper = new UserMapper();
//     User user = new User();
//     user.setEmail("1234356@1223");
//     user.setPassword("343243");
//     user.setUsername("qwsxd");
//     userMapper.add(user);

//     UserMapper userMapper = new UserMapper();
//     User user = new User();
//     user.setEmail("1234356@1223");
//     user.setUsername("qwsxd");
//     String userInfo = userMapper.getUserInfo(user);
//     System.out.println(userInfo);


//     UserMapper userMapper = new UserMapper();
//     User user = new User();
//     user.setEmail("1234356@1223");
//     user.setPassword("343243");
//     user.setUsername("qwsxd");
//     String login = userMapper.login(user);
//     System.out.println(login);

//     UserMapper userMapper = new UserMapper();
//     User user = new User();
//     boolean qwsxd = userMapper.delete("qwsxd");
//     System.out.println(qwsxd);




//     //加载mybatis的核心配置文件，获取SqlSessionFactory
//        String resource = "mybatis-config.xml";
//        InputStream inputStream = Resources.getResourceAsStream(resource);
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        //获取SqlSession对象，用它来执行sql
//        SqlSession sqlSession= sqlSessionFactory.openSession();
//        //执行sql
//        VIPMapper vipMapper = sqlSession.getMapper(VIPMapper.class);
////        vipMapper.add("ckd",true);
//        vipMapper.select("ckd");
//        //sqlSession.commit();


//     //加载mybatis的核心配置文件，获取SqlSessionFactory
//     String resource = "mybatis-config.xml";
//     InputStream inputStream = Resources.getResourceAsStream(resource);
//     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//     //获取SqlSession对象，用它来执行sql
//     SqlSession sqlSession= sqlSessionFactory.openSession();
//     //执行sql
//     ChatRecordMapper chatRecordMapper = sqlSession.getMapper(ChatRecordMapper.class);
//     ChatRecord chatRecord = new ChatRecord();
//     chatRecord.setText("这是实验报告里的一测试");
//     chatRecord.setTime(LocalDateTime.now());
//     chatRecord.setSender("ycl");
//     chatRecord.setRecipient("cdk");
//     chatRecordMapper.addMessage(chatRecord);
//     sqlSession.commit();





//     //加载mybatis的核心配置文件，获取SqlSessionFactory
//     String resource = "mybatis-config.xml";
//     InputStream inputStream = Resources.getResourceAsStream(resource);
//     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//     //获取SqlSession对象，用它来执行sql
//     SqlSession sqlSession= sqlSessionFactory.openSession();
//     //执行sql
//     ChatRecordMapper chatRecordMapper = sqlSession.getMapper(ChatRecordMapper.class);
//     ChatRecord chatRecord = new ChatRecord();
//     chatRecord.setSender("ycl");
//     chatRecord.setRecipient("cdk");
//     chatRecordMapper.selectHistory("ycl", "mmx");

     //加载mybatis的核心配置文件，获取SqlSessionFactory
     String resource = "mybatis-config.xml";
     InputStream inputStream = Resources.getResourceAsStream(resource);
     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
     //获取SqlSession对象，用它来执行sql
     SqlSession sqlSession= sqlSessionFactory.openSession();
     //执行sql
     BlackListMapper blackListMapper = sqlSession.getMapper(BlackListMapper.class);
     BlackList blackList = new BlackList();
     blackList.setTime(LocalDateTime.now());
     blackList.setHost("cdk");
     blackList.setBan("ycl");
     blackListMapper.add(blackList);
     sqlSession.commit();







//        Login.loginIcon(6);
//        Login.progressBar();

//        ClientController controller = new ClientController();
//        controller.homeMenu();
//
//        controller.userMenu("ycl");
//        Email email = new Email();
//        email.sendEmail("2712211738@qq.com","啊吧啊吧");

//        System.out.println(Check.createCheck());
//        System.out.println(Check.createCheck());
//        System.out.println(Check.createCheck());


//        //加载mybatis的核心配置文件，获取SqlSessionFactory
//        String resource = "mybatis-config.xml";
//        InputStream inputStream = Resources.getResourceAsStream(resource);
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        //获取SqlSession对象，用它来执行sql
//        SqlSession sqlSession= sqlSessionFactory.openSession();
//        //执行sql
//        BlackListMapper blackListMapper = sqlSession.getMapper(BlackListMapper.class);
//
//        //
//
//        sqlSession.commit();

//        System.out.println("=====================================");
//        System.out.println("||                                                                              || ");
//        System.out.println("||                                                                              || ");
//        System.out.println("||\t5.私聊\t||\t6.群聊\t||\t7.在线名单\t||\t8.修改密码\t||\t9.注销\t||\t10.退出\t||");
//        System.out.println("||                                                                              || ");
//        System.out.println("|| *高级功能(VIP) ||\t11.查询历史记录\t||\t12.拉黑\t||\t13.取消拉黑\t||\t14.VIP办理  ||");
//        System.out.println("||                                                                              || ");
//        System.out.println("==================================================================================");
//        System.out.println();



        //        controller.userMenu("ycl");
//        Email email = new Email();
//        email.sendEmail("2712211738@qq.com","啊吧啊吧");

//        System.out.println(Check.createCheck());
//        System.out.println(Check.createCheck());
//        System.out.println(Check.createCheck());


//        //加载mybatis的核心配置文件，获取SqlSessionFactory
//        String resource = "mybatis-config.xml";
//        InputStream inputStream = Resources.getResourceAsStream(resource);
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        //获取SqlSession对象，用它来执行sql
//        SqlSession sqlSession= sqlSessionFactory.openSession();
//        //执行sql
//        BlackListMapper blackListMapper = sqlSession.getMapper(BlackListMapper.class);
//        BlackList select = blackListMapper.select("ycl", "mmx");
//        System.out.println(select);



//        BlackList blackList = new BlackList("ycl","zb", LocalDateTime.now());
//        blackListMapper.add(blackList);
//        sqlSession.commit();
//        Icon.loginIcon(666);


     //QRCodePay.QRCode();

//
//     System.out.println("================== ==  YChat  == ==================");
//     System.out.println("||                                               \t||");
//     System.out.println("|| 小组组长：严成龙                                 \t||");
//     System.out.println("||                                               \t||");
//     System.out.println("|| 小组成员：马梦欣、邓文杰、姚梦绮、张贝、徐信怡、张航   \t||");
//     System.out.println("||                                               \t||");
//     System.out.println("|| 简介:YChat从确定到做什么,到想项目名,再到构思整体架    \t||");
//     System.out.println("||     构分配任务,然后一鼓作气写模块功能、改模块功能、   \t||");
//     System.out.println("||     测试模块、改BUG…… 最后完成.......✌            \t||");
//     System.out.println("||                                               \t||");
//     System.out.println("||                湖北师范大学 2109                \t||");
//     System.out.println("||                                               \t||");
//     System.out.println("================== ==  YChat  == ==================");
//
//     try {
//     Thread.sleep(1000);
//     System.out.println();
//      System.out.println("👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉");
//     System.out.println("扫中间二维码进行打赏!");
//     System.out.println("快来支持我们吧！");
//
//     Thread.sleep(1000);
//     QRCodePay.QRCode();
//     } catch (InterruptedException e) {
//      throw new RuntimeException(e);
//     }
    }
}
































/**






 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@               =@@@@@.         =@@@@@     O@@@@@@@@@O          O@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^          @@@@@@@@@@^                          @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@               =@@@@@.         =@@@@@     O@@@@@@@@@O          O@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^          @@@@@@@@@@^                          @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@               =@@@@@.         =@@@@@     O@@@@@@@@@O          O@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^          @@@@@@@@@@^                          @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@^                         =@@@@@               =@@@@@.                    O@@@@@@@@@O     @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^                    =@@@@^          O@@@@^    =@@@@@          =@@@@O                          O@@@@^
 @@@@@^                         =@@@@@               =@@@@@.                    O@@@@@@@@@O     @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^                    =@@@@^          O@@@@^    =@@@@@          =@@@@O                          O@@@@^
 @@@@@^    ,]]]]]]]]]]]]]]]`    =@@@@@               ,[[[[[.         ,]]]]]]]]]][[[[[\@@@@O]]]]]@@@@@\]]]]/[[[[[@@@@@[[[[[\]]]]/@@@@@[[[[[`         .]]]]].    =@@@@\]]]]]]]]]]@@@@@^    =@@@@@          =@@@@O     ]]]]]]]]]]]]]]]]     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@                               =@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^    .@@@@@.    =@@@@@@@@@@               =@@@@@.    =@@@@@@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@                               =@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^    .@@@@@.    =@@@@@@@@@@               =@@@@@.    =@@@@@@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@O     @@@@@^    =@@@@@@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@@@@@@^          O@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@O     @@@@@^    =@@@@@@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@@@@@@^          O@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@O     @@@@@^    =@@@@@@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@@@@@@^          O@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@               =@@@@@.    =@@@@^          O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                     @@@@@^    =@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@               =@@@@@.    =@@@@^          O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                     @@@@@^    =@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^    ,[[[[[[[[[[[[[[[`    =@@@@@     ]]]]]`    .[[[[[.    ,[[[[\]]]]]]]]]]@@@@@\]]]]/[[[[[@@@@@@@@@@@@@@@@[[[[[[[[[[[[[[[\@@@@@          ,]]]]]     [[[[[\]]]]/@@@@@]]]]]@@@@@/[[[[[[[[[[[[[[[`    =@@@@O     [[[[[[[[[[[[[[[[     O@@@@^
 @@@@@^                         =@@@@@     O@@@@^                    =@@@@@@@@@@@@@@@@@@@@O     @@@@@@@@@@@@@@@O               =@@@@@          =@@@@O          =@@@@@@@@@@@@@@@@@@@@^                    =@@@@O                          O@@@@^
 @@@@@^                         =@@@@@     O@@@@^                    =@@@@@@@@@@@@@@@@@@@@O     @@@@@@@@@@@@@@@O               =@@@@@          =@@@@O          =@@@@@@@@@@@@@@@@@@@@^                    =@@@@O                          O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@@@`....=@@@@O.....@@@@@^....=@@@@O     O@@@@^    =@@@@@.....O@@@@^    =@@@@@.    =@@@@^    .@@@@@.....=@@@@O     @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 O@@@@^                         .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@^         =@@@@@.                    O@@@@^
 O@@@@^                         .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@^         =@@@@@.                    O@@@@^
 /OOOOOOOOO\               ,OOOOO     ,[[[[\OOOOOOOOOO.    =OOOO^    .[[[[[[[[[[\OOOOO[[[[[[[[[[[[[[[\@@@@@OOOOOOOOOOOOOOOO@@@@@@@@@@^    =OOOOO[[[[[.              .OOOOO@@@@@^    ,OOOOOOOOOO`    =OOOOOOOOOO.    =OOOO^
 O@@@@@@@@@O               =@@@@@          =@@@@@@@@@@.    =@@@@^               =@@@@O               =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@O                    .@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@^
 O@@@@@@@@@O               =@@@@@          =@@@@@@@@@@.    =@@@@^               =@@@@O               =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@O                    .@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@^
 @@@@@^               O@@@@^                                         =@@@@@     O@@@@@@@@@O               =@@@@O          =@@@@^          O@@@@@@@@@O               =@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@@@@@@@@@@@^          O@@@@^
 @@@@@^               O@@@@^                                         =@@@@@     O@@@@@@@@@O               =@@@@O          =@@@@^          O@@@@@@@@@O               =@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@@@@@@@@@@@^          O@@@@^
 @@@@@\]]]]`          O@@@@\]]]]]]]]]]]]]]]]]]]]`    .]]]]].         =@@@@@     O@@@@OOOOOO]]]]]          =@@@@O]]]]].    =@@@@^          \OOOOOOOOOO]]]]]]]]]].    =OOOOO@@@@@OOOOO@@@@@@@@@@@     ,]]]]/@@@@@OOOOO@@@@@@@@@@\]]]]]]]]]]OOOOO^
 @@@@@@@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@.         =@@@@@     O@@@@^    =@@@@@          =@@@@@@@@@@.    =@@@@^                    =@@@@@@@@@@^         .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@O     O@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@.         =@@@@@     O@@@@^    =@@@@@          =@@@@@@@@@@.    =@@@@^                    =@@@@@@@@@@^         .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@O     O@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@^          .....=@@@@/..........O@@@@^    ......O@@@@^    =@@@@@     O@@@@^    ......          ......@@@@@.    =@@@@@@@@@@               ............    =@@@@O......    .....=@@@@@     O@@@@^.....     .....=@@@@/.....@@@@@^
 @@@@@@@@@@^               =@@@@^          O@@@@^          @@@@@^    =@@@@@     O@@@@^                         .@@@@@.    =@@@@@@@@@@                               =@@@@@               =@@@@@     O@@@@^               =@@@@^    .@@@@@^
 @@@@@@@@@@^               =@@@@^          O@@@@^          @@@@@^    =@@@@@     O@@@@^                         .@@@@@.    =@@@@@@@@@@                               =@@@@@               =@@@@@     O@@@@^               =@@@@^    .@@@@@^
 @@@@@@@@@@@@@@@O     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@.         =@@@@@               =@@@@@          =@@@@O               =@@@@@          =@@@@@@@@@@.         =@@@@@          =@@@@O     @@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@     O@@@@^
 @@@@@@@@@@@@@@@O     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@.         =@@@@@               =@@@@@          =@@@@O               =@@@@@          =@@@@@@@@@@.         =@@@@@          =@@@@O     @@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@     O@@@@^
 [[[[[@@@@@@@@@@O     [[[[[`    ,[[[[[@@@@@/[[[[\@@@@@@@@@@.    ,]]]]/[[[[[     ]]]]]]]]]]/[[[[[     ,]]]]/[[[[[          ,]]]]/@@@@@     ,]]]]/@@@@@@@@@@]]]]]`    =@@@@@]]]]].    ,[[[[\]]]]]@@@@@/[[[[[[[[[\@@@@@.    =@@@@O[[[[[]]]]]/[[[[`
 O@@@@@@@@@O                    .@@@@@^    =@@@@@@@@@@.    =@@@@^          O@@@@@@@@@O          O@@@@^               =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@.         =@@@@@@@@@@^         .@@@@@.    =@@@@^    .@@@@@^
 O@@@@@@@@@O                    .@@@@@^    =@@@@@@@@@@.    =@@@@^          O@@@@@@@@@O          O@@@@^               =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@.         =@@@@@@@@@@^         .@@@@@.    =@@@@^    .@@@@@^
 @@@@@^               O@@@@@@@@@@@@@@@          =@@@@O     @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^               =@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@          =@@@@O     O@@@@@@@@@^          O@@@@^
 @@@@@^               O@@@@@@@@@@@@@@@          =@@@@O     @@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^               =@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@          =@@@@O     O@@@@@@@@@^          O@@@@^
 @@@@@^               O@@@@@@@@@@@@@@@          =@@@@O     @@@@@^    =@@@@@@@@^                                                                                  O@@@@@@@@@@@@@.    =@@@@@@@@@@          =@@@@O     O@@@@@@@@@^          O@@@@^
 =@@@@O     O@@@@^         .@@@@@^    =@@@@@@@@@@.    =@@@@^                                                                                                   .@@@@@.                    O@@@@^    .@@@@@.         =@@@@@     O@@@@^
 =@@@@O     O@@@@^         .@@@@@^    =@@@@@@@@@@.    =@@@@^               ..]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]`...]]]]]]]]]]]]]]]]]]]]]]]]]]]]`.               .@@@@@.                    O@@@@^    .@@@@@.         =@@@@@     O@@@@^
 ,[[[[[     [[[[[`    ,]]]]]@@@@@^    ,[[[[[[[[[[.    ,[[[[\]]]]]        ./@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     ,]]]]]@@@@@\]]]]`    ,]]]]]     O@@@@\]]]]]@@@@@]]]]]`    =@@@@@     O@@@@^
 =@@@@@@@@@@^                         =@@@@@        =O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@@     O@@@@^
 =@@@@@@@@@@^                         =@@@@@        =O@@@@@[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[@@@@@     =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@@@@@@@@@@@@^    =@@@@@     O@@@@^
 @@@@@^    =@@@@@@@@@@.                         =@@@@@@@@@@.    =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  O@@@@@@@@     O@@@@@@@@@O     @@@@@@@@@@^    .@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@.                         =@@@@@@@@@@.    =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  O@@@@@@@@     O@@@@@@@@@O     @@@@@@@@@@^    .@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@.                         =@@@@@@@@@@.    =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  O@@@@@@@@     O@@@@@@@@@O     @@@@@@@@@@^    .@@@@@@@@@@^
 .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  O@@^    .@@@@@.                              .@@@@@@@@@@^               O@@@@^
 .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  O@@^    .@@@@@.                              .@@@@@@@@@@^               O@@@@^
 ,OOOOO@@@@@.    =@@@@/[[[[[OOOOO@@@@@@@@@@@@@@@@[[[[[\@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@  ,[[\OOOOO@@@@@OOOOO^               /OOOO^    .[[[[[[[[[[\OOOO^          O@@@@^
 =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@     =@@@@@@@@@@@@@@@^               O@@@@^               =@@@@^          O@@@@^
 =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@     =@@@@@@@@@@@@@@@^               O@@@@^               =@@@@^          O@@@@^
 @@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@^               =@@@@^    .@@@^    =O@@@@@                                                                @@@@@  O@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@^               =@@@@^    .@@@^    =O@@@@@                                                                @@@@@  O@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^
 OOOOO^...............@@@@@@OOOOOOOOOOOOOOO@@@@@^    .........../OOOO^    .@@@^    =O@@@@@                                                                @@@@@  \OOOOOOOO@@@@@`....=OOOOOOOOOO@@@@@@OOOOOOOOOOOOOOO@@@@@@@@@@@OOOOOOOOOO^.....
 O@@@@@@@@@@@@@@@@@@@@^               O@@@@^    =@@@@@@@@@@^         .@@@^    =O@@@@@                                                                @@@@@          .@@@@@@@@@@^          @@@@@^               O@@@@@@@@@^          O@@@@^
 O@@@@@@@@@@@@@@@@@@@@^               O@@@@^    =@@@@@@@@@@^         .@@@^    =O@@@@@                                                                @@@@@          .@@@@@@@@@@^          @@@@@^               O@@@@@@@@@^          O@@@@^
 OOOOO@@@@@@@@@@@@@@@@@@@@@^    =OOOOO     O@@@@@OOOOO.....@@@@@@OOOO^    .@@@^    =O@@@@@                                                                @@@@@  /OO^    .@@@@@`....=OOOO\     @@@@@^    =OOOOO     O@@@@@@@@@@OOOOO     O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@O     @@@@@@@@@@^    .@@@^    =O@@@@@                                                                @@@@@  O@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@     O@@@@@@@@@O     @@@@@@@@@@^    .@@@^    =O@@@@@                                                                @@@@@  O@@^    .@@@@@.    =@@@@O     @@@@@^    =@@@@O     O@@@@@@@@@@@@@@@     O@@@@^
 =@@@@O     O@@@@^               O@@@@^          @@@@@^    =@@@@@@@@^    ..@@@@@                                                                @@@@@          .@@@@@@@@@@^    =@@@@@@@@@@^               O@@@@^    =@@@@@@@@@@@@@@@^
 =@@@@O     O@@@@^               O@@@@^          @@@@@^    =@@@@@@@@^    ..@@@@@                                                                @@@@@          .@@@@@@@@@@^    =@@@@@@@@@@^               O@@@@^    =@@@@@@@@@@@@@@@^
 ]]]]]]]]]]/[[[[[     O@@@@\]]]]]]]]]]]]]]]O@@@@\]]]]]]]]]]@@@@@\]]]]/@@@@@[[[`    ..@@@@@                                                                @@@@@          .@@@@@@@@@@^    =@@@@@@@@@@\]]]]]]]]]]]]]]]@@@@@\]]]]/[[[[\@@@@@@@@@@^
 @@@@@@@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        =O@@@@@                                                                @@@@@          .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    .@@@@@@@@@@^
 @@@@@@@@@@^          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        =O@@@@@                                                                @@@@@          .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    .@@@@@@@@@@^
 O@@@@@@@@@O     O@@@@@@@@@^    .@@@@@^    =@@@@O          =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@          .@@@@@.         =@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@^
 O@@@@@@@@@O     O@@@@@@@@@^    .@@@@@^    =@@@@O          =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@          .@@@@@.         =@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@^
 O@@@@@@@@@O     O@@@@@@@@@^    .@@@@@^    =@@@@O          =@@@@@@@@@@@@@^    =O@@@@@                                                                @@@@@.         .@@@@@.         =@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@^
 @@@@@^         .@@@@@@@@@@^    =@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@^    =O@@@@@                                                                @@@@@...       .@@@@@.                    O@@@@^                    =@@@@@     O@@@@^
 @@@@@^         .@@@@@@@@@@^    =@@@@@     O@@@@^    =@@@@@.    =@@@@^    .@@@^    .[@@@@@                                                                @@@@@......    .@@@@@.                    O@@@@^                    =@@@@@     O@@@@^
 @@@@@^         .[[[[[@@@@@\]]]]/[[[[[]]]]]/[[[[`    ,[[[[[]]]]]/[[[[`    .[[[`    ..@@@@@                                                                @@@@@o\....   ]][[[[[]]]]]`               O@@@@\]]]]]]]]]].    ,]]]]/@@@@@]]]]]O@@@@^
 @@@@@^               O@@@@@@@@@^    .@@@@@^               @@@@@^                  ..@@@@@                                                                @@@@@...`..   =@     O@@@@^               O@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^
 @@@@@^               O@@@@@@@@@^    .@@@@@^               @@@@@^                  ..@@@@@                                                                @@@@@/ooo..   .@     O@@@@^               O@@@@@@@@@@@@@@@.    =@@@@@@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@O     O@@@@^    =@@@@@               =@@@@@@@@@@@@@@@@@@@@@@@@^    ..@@@@@                                                                @@@@@oooo^.   .@@@@@@@@@@@^          @@@@@^    =@@@@@@@@@@@@@@@^               O@@@@^
 @@@@@@@@@@@@@@@O     O@@@@^    =@@@@@               =@@@@@@@@@@@@@@@@@@@@@@@@^    =o@@@@@]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]@@@@@oooo^.   .@@@@@@@@@@@^          @@@@@^    =@@@@@@@@@@@@@@@^               O@@@@^
 @@@@@@@@@@@@@@@O     O@@@@^    =@@@@@               =@@@@@@@@@@@@@@@@@@@@@@@@^    .\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@oooo..   .@@@@@@@@@@@^          @@@@@^    =@@@@@@@@@@@@@@@^               O@@@@^
 @@@@@@@@@@@@@@@O          =@@@@^          O@@@@@@@@@O     @@@@@^    =@@@@@         .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ooo...   /@     O@@@@@@@@@O     @@@@@@@@@@^               =@@@@^    .@@@@@^
 @@@@@@@@@@@@@@@O          =@@@@^          O@@@@@@@@@O     @@@@@^    =@@@@@                                                              ....,oooooooooooooooooo`....  ,@@     O@@@@@@@@@O     @@@@@@@@@@^               =@@@@^    .@@@@@^
 [[[[[[[[[[\@@@@@]]]]]]]]]]O@@@@@]]]]]     O@@@@@@@@@O     @@@@@\]]]]/[[[[[                                                               .....oooooooooooooo[......  /@@@]]]]][[[[[\@@@@@]]]]][[[[[O@@@@^          ]]]]]O@@@@^    .@@@@@^
 =@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@@@@@@O     @@@@@@@@@@^                                    ,OOOOOOOOOOOOOOOOOOOOOOOOOO       ..=/`.................  /@@@@@@@@@@.    =@@@@@@@@@@     O@@@@^          O@@@@@@@@@^    .@@@@@^
 =@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@@@@@@O     @@@@@@@@@@^                                    =@@@@@@@@@@@@@@@@@@@@@@@@@@    ... ........ ....       ,/@@@@@@@@@@@@.    =@@@@@@@@@@     O@@@@^          O@@@@@@@@@^    .@@@@@^
 O@@@@@@@@@O          =@@@@^    .@@@@@^               @@@@@@@@@@^    .@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    .@@@@@@@@@@^               ..   .....   ..    ,/^         .@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@.         =@@@@@@@@@@@@@@@^
 O@@@@@@@@@O          =@@@@^    .@@@@@^               @@@@@@@@@@^    .@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    .@@@@@@@@@@^               O\`       =@@@@@@@@@@^         .@@@@@@@@@@^    =@@@@@@@@@@^    =@@@@@@@@@@.         =@@@@@@@@@@@@@@@^
 \@@@@@@@@@O     .....=@@@@\.....@@@@@^.....          @@@@@@@@@@^.....@@@@@@@@@@^....=@@@@@@@@@@@@@@@^.....@@@@@@@@@@^.....    ......O@@@@^....=@@@@@@@@@@^    ......@@@@@@@@@@^....=@@@@@@@@@@^....=@@@@@@@@@@..........=@@@@@@@@@@@@@@@^
 O@@@@@@@@@@@@@@@@@@@@@@@@@^          @@@@@@@@@@@@@@@@          =@@@@@@@@@@          =@@@@O          =@@@@^    .@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@^          O@@@@^
 O@@@@@@@@@@@@@@@@@@@@@@@@@^          @@@@@@@@@@@@@@@@          =@@@@@@@@@@          =@@@@O          =@@@@^    .@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@.    =@@@@@@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@^          O@@@@^
 =OOOOO     .....................O@@@@@OOOO\     .....\@@@@/....,OOOOO.    =@@@@@@@@@@OOOOOOOOOO@@@@@@OOOOOOOOOO^.....    .@@@@@^....=@@@@O..........\OOOOO@@@@@@@@@@.    =@@@@@@@@@@     ..........,@@@@@`..........    .OOOOO@@@@@^
 =@@@@O                          O@@@@@@@@@O          =@@@@^    .@@@@@.    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^         .@@@@@^    =@@@@O          =@@@@@@@@@@@@@@@.    =@@@@@@@@@@               .@@@@@.              .@@@@@@@@@@^
 =@@@@O                          O@@@@@@@@@O          =@@@@^    .@@@@@.    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^         .@@@@@^    =@@@@O          =@@@@@@@@@@@@@@@.    =@@@@@@@@@@               .@@@@@.              .@@@@@@@@@@^
 O@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@^               =@@@@O          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^         =@@@@@.    =@@@@^    .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@O                    .@@@@@^
 O@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@^               =@@@@O          O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^         =@@@@@.    =@@@@^    .@@@@@.    =@@@@@@@@@@     O@@@@@@@@@O                    .@@@@@^
 ,]]]]]]]]]]]]]]]@@@@@^    ,OOOOO     \OOOO\]]]]/OOOOOOOOOO@@@@@\]]]]]]]]]].    =OOOOO]]]]]]]]]]O@@@@@@@@@@OOOOOOOOOOOOOOOO@@@@@@@@@@^    ,]]]]/OOOOO]]]]]/OOOO^    .OOOOO]]]]]/@@@@@OOOOO     \OOOOOOOOOO]]]]].              .OOOOO\]]]]`
 O@@@@@@@@@@@@@@@@@@@@^                    =@@@@O          =@@@@@@@@@@@@@@@.         =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@^    =@@@@O     @@@@@^               O@@@@@@@@@O                    .@@@@@.                    O@@@@^
 O@@@@@@@@@@@@@@@@@@@@^                    =@@@@O          =@@@@@@@@@@@@@@@.         =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@^    =@@@@O     @@@@@^               O@@@@@@@@@O                    .@@@@@.                    O@@@@^
 @@@@@^         .@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^               O@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^          @@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^         .@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^               O@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^          @@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^
 @@@@@^         .@@@@@@@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@@@@@@^               O@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^          @@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     O@@@@^
 O@@@@@@@@@@@@@@@@@@@@@@@@@^    .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@@@@@@^          @@@@@@@@@@^    .@@@@@@@@@@@@@@@@@@@@@@@@@@^               O@@@@@@@@@^          O@@@@^
 O@@@@@@@@@@@@@@@@@@@@@@@@@^    .@@@@@@@@@@^    =@@@@@@@@@@@@@@@@@@@@O               =@@@@@@@@@@@@@@@^          @@@@@@@@@@^    .@@@@@@@@@@@@@@@@@@@@@@@@@@^               O@@@@@@@@@^          O@@@@^
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]     [[[[[\@@@@@@@@@@@@@@@/[[[[\]]]]][[[[[[[[[[\]]]]/[[[[[@@@@@/[[[[\@@@@O     ]]]]]`    =@@@@@@@@@@/[[[[`    .]]]]][[[[[\@@@@^    .@@@@@@@@@@@@@@@@[[[[[@@@@@^    ,]]]]]     O@@@@/[[[[\]]]]]]]]]]O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@@@@@@^         =@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@@@@@@@@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@@@@@@^         =@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@@@@@@@@@@@^
 @@@@@^                         =@@@@@          =@@@@@@@@@@.         =@@@@@               =@@@@@          =@@@@O               =@@@@@@@@@@^               @@@@@^    =@@@@@               =@@@@@@@@@@^               O@@@@^         .@@@@@@@@@@^
 @@@@@^                         =@@@@@          =@@@@@@@@@@.         =@@@@@               =@@@@@          =@@@@O               =@@@@@@@@@@^               @@@@@^    =@@@@@               =@@@@@@@@@@^               O@@@@^         .@@@@@@@@@@^
 @@@@@^                         =@@@@@          =@@@@@@@@@@.         =@@@@@               =@@@@@          =@@@@O               =@@@@@@@@@@^               @@@@@^    =@@@@@               =@@@@@@@@@@^               O@@@@^         .@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     @@@@@^         .@@@@@.         =@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@.         =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@O     @@@@@^         .@@@@@.         =@@@@@     O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@.         =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@@]]]]][[[[[`         .[[[[[.         .[[[[[]]]]]O@@@@@@@@@@@@@@@@@@@@/[[[[\@@@@@          =@@@@@@@@@@.    ,]]]]/[[[[[]]]]]@@@@@\]]]]/[[[[[@@@@@@@@@@/[[[[[@@@@@@@@@@\]]]]/[[[[[@@@@@/[[[[`
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@@@@@@@.                                    @@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@          =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@O     @@@@@@@@@@^    .@@@@@@@@@@@@@@@^    .@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@          =@@@@@@@@@@.                                    @@@@@@@@@@@@@@@@@@@@@@@@@@^    =@@@@@          =@@@@@@@@@@.    =@@@@^    .@@@@@@@@@@@@@@@O     @@@@@@@@@@^    .@@@@@@@@@@@@@@@^    .@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@^                          @@@@@@@@@@^          O@@@@@@@@@@@@@@@     O@@@@@@@@@@@@@@@.    =@@@@^    .@@@@@.               @@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@^                          @@@@@@@@@@^          O@@@@@@@@@@@@@@@     O@@@@@@@@@@@@@@@.    =@@@@^    .@@@@@.               @@@@@^               O@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@^    =@@@@@@@@@@@@@@@^    =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@^...........    ...........@@@@@@@@@@^    ......O@@@@@@@@@@@@@@@     O@@@@@@@@@@@@@@@.....=@@@@^.....@@@@@......    ......@@@@@^         ......O@@@@@@@@@@@@@@@@@@@@@@@@@^
 @@@@@^                         =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@               .@@@@@.    =@@@@@@@@@@                     @@@@@@@@@@@@@@@@     O@@@@^    =@@@@@@@@@@^         .@@@@@@@@@@^         .@@@@@@@@@@^
 @@@@@^                         =@@@@@     O@@@@^    =@@@@@@@@@@@@@@@@@@@@@@@@@@.    =@@@@@@@@@@               .@@@@@.    =@@@@@@@@@@                     @@@@@@@@@@@@@@@@     O@@@@^    =@@@@@@@@@@^         .@@@@@@@@@@^         .@@@@@@@@@@^
 @@@@@OOOOOOOOOOOOOOOOOOOOOOOOOOO@@@@@     ,[[[[\OOOOO@@@@@[[[[[[[[[[[[[[[[[[[[[.    =@@@@O[[[[[OOOOO`    =OOOOO[[[[[OOOOO/[[[[\@@@@@                     @@@@@/[[[[[[[[[[OOOOO[[[[[`    =@@@@@@@@@@OOOOOOOOOOO[[[[[@@@@@OOOOO^    .[[[[[O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@.                         =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@                     @@@@@^         .@@@@@.         =@@@@@@@@@@@@@@@@@@@@O     O@@@@@@@@@^          O@@@@^
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          =@@@@@@@@@@.                         =@@@@O     @@@@@^    =@@@@O     O@@@@^    =@@@@@                     @@@@@^         .@@@@@.         =@@@@@@@@@@@@@@@@@@@@O     O@@@@@@@@@^          O@@@@^




















 */
